<?php

/**
 * @file rombo.php
 * @brief Clase para generar un rombo
 * @author DyrTechnologies
 * @version V 1.0
 * @date Wed Oct 03 2007
 *
 *  Part of the CEFIRO dynamic web framework project
 *
 *  Copyright (C) 2007  Dyr technologies http://dyrtech.com.ve
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 * @class Clase rombo
 */

require_once(CEF_DOMAINS);

/**
 * @brief Define la ruta a la hoja de estilos para el rombo
 *
 */

define("ROMBO_CSS",FULL_URL."rombo/rombo.css");
define("ROMBO_FORM_CSS",FULL_URL."rombo/rombo_form.css");
define("TOOLTIP_JS",FULL_URL."rombo/tooltip.js");
define("YES","si");
define("NO","no");

$rombo_instance = 0;

class rombo extends domain {

	private $form;
	private $name;
	private $readonly;
	private $color;

	/**
	 * @brief Constructor por omision y parametrico de la clase
	 * aprovechamos el hecho de que cada atributo
	 * tiene un valor por omision predefinido para no
	 * rehacer el constructor
	 *
	 * @param string $_form
	 * @param string $_name
	 * @param string $_readonly
	 * @param string $_color
	 * @return rombo La instancia de la clase
	 */

	public function rombo($_form = "form", $_name = "__rombo", $_readonly = NO, $_color = YES, $dom_rombo = ""){

		/**
		 * @brief Se asignan los valores a los atributos de la clase rombo segun vengan dados al llamar al constructor de la misma, notar que existen valores por omisi�n para cada atributo
		 */
		$this->form=$_form;

		/**
		 * @brief $radio_instance es una variable para incrementar el numero de botones radio existentes
		 */
		global $rombo_instance;
		$rombo_instance++;

		/**
		 * @brief El nombre del widget es el tipo con el numero de la instancia que representa o el nombre pasado por omision en caso contrario
		 */

		if($_name!="__rombo")
			$this->name=$_name;
		else
			$this->name="rombo".$rombo_instance;

		/**
		 * @brief Solo se aceptan los valores YES y NO para los atributos de solo lectura y Color
		 */

		if($_readonly != YES && $_readonly != NO)
			$this->readonly = NO;
		else $this->readonly = $_readonly;

		if($_color != YES && $_color != NO)
			$this->color = YES;
		else $this->color = $_color;

		$this->set_domain($dom_rombo);
	}

	/**
	 * @brief Las funciones get_VAR devuelven las variables que tenga ajustadas la instancia formulario (form), nombre (name), Solo lectura(readonly), color(color)
	 *
	 * @return string Valor de VAR
	 */
	public function get_form(){
		return $this->form;
	}

	public function get_name(){
		return $this->name;
	}

	public function get_readonly(){
		return $this->readonly;
	}

	public function get_color(){
		return $this->color;
	}

	/**
	 * @brief Las funciones set_VAR ajustan las variables de la instancia: formulario(form), nombre(name), Solo Lectura(readonly), color(color)
	 */

	public function set_form($_form){
		$this->form=$_form;
	}

	public function set_name($_name){
		$this->name=$_name;
	}

	public function set_readonly($_readonly){
		$this->readonly=$_readonly;
	}

	public function set_color($_color){
		$this->color=$_color;
	}

	/**
	 * @brief Ajusta los valores de smarty de acuerdo a lo especificado por los atributos de la instancia de rombo
	 */
	private function smarty_rombo(){

		global $smarty;

		/**
		 * @brief Asignacion atributo por atributo a lo deseado en las variables de smarty
		 */
		$smarty->assign("form",$this->get_form());
		$smarty->assign("name",$this->get_name());
		$smarty->assign("readonly",$this->get_readonly());
		$smarty->assign("color",$this->get_color());
		$smarty->assign('dom_valrombo',$this->get_domains());

		/**
		 * @brief Asigna la hoja de estilo que contiene los rasgos del rombo a una variable
		 */
		$smarty->assign("rombocss",ROMBO_CSS);

		/**
		 * @brief Asigna la hoja de estilo que contiene los rasgos del formulario del rombo a una variable
		 */
		$smarty->assign("romboformcss",ROMBO_FORM_CSS);

		/**
		 * @brief Asigna los javascripts del tooltip
		 */
		$smarty->assign("tooltipjs",TOOLTIP_JS);

		/**
		 * @brief Asigna las cargas de las imagenes de ayuda
		 */

		$smarty->assign("rombohelp",FULL_URL."rombo/img/ayuda_rombo.png");
		$smarty->assign("rombonorma",FULL_URL."rombo/img/norma_rombo.png");
	}

	/**
	 * @brief Devuelve el Rombo como una cadena con sus parametros
	 *
	 * @return string $retval
	 */
	public function get_rombo(){
		$retval="";

		if( strlen( $this->get_form() ) > 0)
			$retval.=$this->get_form()." ";
		if( strlen( $this->get_name() ) > 0)
			$retval.=$this->get_name()." ";
		if( strlen( $this->get_readonly() ) > 0)
			$retval.=$this->get_readonly()." ";
		if( strlen( $this->get_color() ) > 0)
			$retval.=$this->get_color()." ";
		$retval.=$this->get_domains();

		return $retval;
	}

	/**
	 * @brief Asigna el rombo a la variable $smarty para su renderizacion
	 *
	 */
	public function display_rombo(){
		global $smarty;
   		$smarty->template_dir = dirname(__FILE__).'/';
		$this->smarty_rombo();
		$smarty->assign('rombo',$smarty->fetch('geom_rombo.tpl'));
		$smarty->assign( $this->get_name(), $smarty->fetch('rombo.tpl') );
	}
}

?>